/*
7-26 最大公约数和最小公倍数
分数 15
作者 张彤彧
单位 浙江大学

本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:

输入在一行中给出两个正整数M和N（≤1000）。
输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数，两数字间以1空格分隔。
输入样例:

511 292

输出样例:

73 2044
*/

#include <stdio.h>

// 最大公约数
// gcd(a, b) = gcd(b, a mod b)
int gcd(int a, int b) { 
    return a == 0 ? b : gcd(b % a, a); 
}

// 最小公倍数（LCM - Least Common Multiple）的算法就是：
// GCD(a, b) * LCM(a, b)= a * b
int lcm(int a, int b, int gcd) {
    return a * b / gcd;
}

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if (a > b) {
        int t = a;
        a = b;
        b = t;
    }
    int vgcd = gcd(a, b);
    int vlcm = lcm(a, b, vgcd);
    printf("%d %d\n", vgcd, vlcm);
    return 0;
}